''' Flask框架
    1. 介绍Flask框架
    2.werkzueg 专门用来处理请求相关的内容比如：地址
    3.jinja2: 用来做页面的渲染处理
    4.额外的扩展包： 用来处理数据库的连接，站点的管理，flask-cache缓存处理

2.虚拟环境
    就是一个特殊的文件夹，里面存放着程序，运行所需要的各种版本的python解释器，各种版本的框架
4.我用的pycharm里面的flask创建了文件夹
5.查看哪些路由地址可以访问
    使用： app.url_map，返回的是： app装饰的所有的路由和路径之间的映射关系
    注意点：只有被 app.url_map 包含进来的路由（地址）才能被访问
6.app.run()参数
    参数1：host 如果我们不指定，默认值是：127.0.0.1
    参数2：port 如果我们不指定，默认值是：5000
    参数3：debug 调试模式，如果我们不指定，默认值是：False
        如果设置为True两个好处：
            如果再运行的过程种改动代码，不需要重新启动程序，只需要ctrl+s保存即可部署程序
            出错时：有友情提示

7.在访问路由时候指定参数
    格式：@app.route("/<类型：变量名>")
    常见的参数类型
        整数 int
        小数 float
        字符串 path 默认就是path

8.自定义参数类型（自定义转换器）
    背景：
        如果系统提供的参数类型满足不了需求的时候，我们需要自定义
        之所以，int,float,path可以接收不同的数据类型，是因为，系统已经提供好对应的转换器了
    自定义转换格式：
        1.定义类，继承自：BaseConverter
        2.重写init方法
        3.初始化父类成员变量，还有子类自己的规则
        4.将转换器类，添加到系统默认的转换器列表中

9.给路由增加其他的访问方式:
    格式：@app.route("路径"，methods=["请求方式1"，"请求方式2"，···])
    常见请求方式：
        GET.POST.PUT.DELETE
    如果不指定请求方式：默认是GET

10.返回响应：
    1.直接返回响应体数据
        return ‘字符串’
    2.直接返回响应体数据+状态码
        return ‘字符串’，状态码
    3.直接返回响应体数据+状态码+响应头信息
        return ‘字符串’，状态码，{key:value}

11.通过jsonify返回json数据
    格式：jsonify(dict)
    简化格式：jsonify(key1=value1,key2=value2)

12.重定向
    格式：redirect('地址')，地址可以是本地的服务器也可以是外部的服务器
    注意：重定向的代号是：302
    特点：重定向是两次请求

13.uel_for
    解释：反解析，返回的是视图函数对应的路由地址
    格式：url_for('视图函数'，key=value)
    注意：url_for 通常和 redirect 一起传递参数

14.abort&errorhandler
    使用场景：当访问服务器资源的时候，如果找不到该资源，可以报出异常信息，使用errorhandler捕捉
    格式：abort(代号)
    格式：@app.errorhandler(代号)

15.request对象参数：
    request.data 获取的是非表单(ajax)以post,提交数据
    request.form 获取的表单以post方式提交的数据
    request.args 获取的是问号后面的查询参数
    request.method 获取的请求方式
    request.files 获取的是input标签中type类型为file 的文件

16.加载app程序运行参数
    1.从配置类（对象）中加载
        app.config.from_object(obj)
    2.从配置文件中加载
        app.config.from_pyfile(file)
    3.从环境变量中加载
        app.config.from_envar(环境变量)
    4.app.config 表示app程序，运行所有的参数信息

17.请求钩子
    解释：当访问正常视图函数的时候，顺带执行的方法
    常见的请求钩子：
        1.before_first_request:在处理第一个请求前执行
        2.before_request:在每次请求前执行，在该装饰函数中，一旦return,视图函数不在执行
        3.after_request:如果没有抛出错误，在每次请求后执行，接收一个参数：视图函数做出的响应
            在此函数中可以对响应值，在返回之前做最后一步处理，再返回
        4.teardown_request:在每次请求后执行，接收一个参数：用来接收错误信息

'''



















